<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>blmc_drivers: /workspace/software/workspace/src/catkin/hardware/blmc_drivers/include/blmc_drivers/devices/motor_board.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">blmc_drivers
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('motor__board_8hpp_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">motor_board.hpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="motor__board_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &quot;real_time_tools/timer.hpp&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &quot;real_time_tools/thread.hpp&quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="os__interface_8hpp.html">blmc_drivers/utils/os_interface.hpp</a>&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &quot;real_time_tools/threadsafe/threadsafe_object.hpp&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &quot;real_time_tools/threadsafe/threadsafe_timeseries.hpp&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="can__bus_8hpp.html">blmc_drivers/devices/can_bus.hpp</a>&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="device__interface_8hpp.html">blmc_drivers/devices/device_interface.hpp</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceblmc__drivers.html">blmc_drivers</a></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment">//==============================================================================</span></div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardCommand.html">   31</a></span>&#160;<span class="comment"></span><span class="keyword">class </span><a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html">MotorBoardCommand</a></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;{</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardCommand.html#ad5ac32071cbf2854135fee7bb89acf4e">   38</a></span>&#160;    <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#ad5ac32071cbf2854135fee7bb89acf4e">MotorBoardCommand</a>() { }</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardCommand.html#ae7cf695d2600d84929729befc3cb29f9">   46</a></span>&#160;    <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#ae7cf695d2600d84929729befc3cb29f9">MotorBoardCommand</a>(uint32_t <span class="keywordtype">id</span>, int32_t content)</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;    {</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#a31bfcc3cb1b2c35cbd5349123d884af4">id_</a> = id;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#ac417b63a8cc8801a6757f4dce3b0810c">content_</a> = content;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    }</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardCommand.html#aa8a54ff3faa6c2b4ce50c13a0d83bcb3">   55</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#aa8a54ff3faa6c2b4ce50c13a0d83bcb3">print</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        <a class="code" href="os__interface_8hpp.html#a1acf1ce04ab7fe3a5972c0618adcbbac">rt_printf</a>(<span class="stringliteral">&quot;command id: %d, content: %d\n&quot;</span>, <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#a31bfcc3cb1b2c35cbd5349123d884af4">id_</a>, <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#ac417b63a8cc8801a6757f4dce3b0810c">content_</a>);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    }</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardCommand.html#abdbd6eb70164938ea91ae02000ccf7b2">   64</a></span>&#160;    <span class="keyword">enum</span> <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#abdbd6eb70164938ea91ae02000ccf7b2">IDs</a></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    {</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;        ENABLE_SYS = 1,</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        ENABLE_MTR1 = 2,</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        ENABLE_MTR2 = 3,</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        ENABLE_VSPRING1 = 4,</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        ENABLE_VSPRING2 = 5,</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        SEND_CURRENT = 12,</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        SEND_POSITION = 13,</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        SEND_VELOCITY = 14,</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        SEND_ADC6 = 15,</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        SEND_ENC_INDEX = 16,</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        SEND_ALL = 20,</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        SET_CAN_RECV_TIMEOUT = 30,</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        ENABLE_POS_ROLLOVER_ERROR = 31,</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    };</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardCommand.html#ad61acf8dcb8f6fcb382fc5cbc1e44615">   84</a></span>&#160;    <span class="keyword">enum</span> <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#ad61acf8dcb8f6fcb382fc5cbc1e44615">Contents</a></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    {</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        ENABLE = 1,</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        DISABLE = 0</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    };</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardCommand.html#a31bfcc3cb1b2c35cbd5349123d884af4">   93</a></span>&#160;    uint32_t <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#a31bfcc3cb1b2c35cbd5349123d884af4">id_</a>;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardCommand.html#ac417b63a8cc8801a6757f4dce3b0810c">   98</a></span>&#160;    int32_t <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html#ac417b63a8cc8801a6757f4dce3b0810c">content_</a>;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;};</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;<span class="comment">//==============================================================================</span></div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html">  108</a></span>&#160;<span class="comment"></span><span class="keyword">class </span><a class="code" href="classblmc__drivers_1_1MotorBoardStatus.html">MotorBoardStatus</a></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9984f10f289f1a853dd4e34544be2c9d">  118</a></span>&#160;    uint8_t system_enabled:1;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#ae571da09a338790e07847efb068168af">  123</a></span>&#160;    uint8_t motor1_enabled:1;  <span class="comment">// 1</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a223efb9b461331c2e80b922ec29458cf">  128</a></span>&#160;    uint8_t motor1_ready:1;    <span class="comment">// 2</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a3f21330096dc12e6ef6fa2cd2d628c06">  133</a></span>&#160;    uint8_t motor2_enabled:1;  <span class="comment">// 3</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a4f0191a042a1968c8938177ad13fb760">  138</a></span>&#160;    uint8_t motor2_ready:1;    <span class="comment">// 4</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#ad1a5cb78d86e76a60750c0e3e6b34b7e">  143</a></span>&#160;    uint8_t error_code:3;      <span class="comment">// 5-7</span></div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cf">  148</a></span>&#160;    <span class="keyword">enum</span> <a class="code" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cf">ErrorCodes</a></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    {</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cfa99d623b3894cfb91a0626b56d0583f84">  151</a></span>&#160;        NONE = 0,</div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cfab3a0b4c22659f24593503e41fce561d0">  153</a></span>&#160;        ENCODER = 1,</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cfa25dd0ce676d69449a6fe0a02fa6e6a5d">  155</a></span>&#160;        CAN_RECV_TIMEOUT = 2,</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cfa43b0778d39a1aa2c193e2b511f2fe511">  158</a></span>&#160;        CRIT_TEMP = 3,  <span class="comment">// currently unused</span></div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cfa3134cc4a15dfbbeccd1305ad7f0e56cf">  160</a></span>&#160;<span class="comment"></span>        POSCONV = 4,</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cfa87717db1d2ce92549a0bd95890c45f63">  162</a></span>&#160;        POS_ROLLOVER = 5,</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cfa2b6b3fa06a4bf24105805b604aff7280">  164</a></span>&#160;        OTHER = 7</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    };</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardStatus.html#ac050ae0cdf1c6e56ebd241c41330a42d">  170</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classblmc__drivers_1_1MotorBoardStatus.html#ac050ae0cdf1c6e56ebd241c41330a42d">print</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;        <a class="code" href="os__interface_8hpp.html#a1acf1ce04ab7fe3a5972c0618adcbbac">rt_printf</a>(<span class="stringliteral">&quot;\tSystem enabled: %d\n&quot;</span>, system_enabled);</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        <a class="code" href="os__interface_8hpp.html#a1acf1ce04ab7fe3a5972c0618adcbbac">rt_printf</a>(<span class="stringliteral">&quot;\tMotor 1 enabled: %d\n&quot;</span>, motor1_enabled);</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        <a class="code" href="os__interface_8hpp.html#a1acf1ce04ab7fe3a5972c0618adcbbac">rt_printf</a>(<span class="stringliteral">&quot;\tMotor 1 ready: %d\n&quot;</span>, motor1_ready);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        <a class="code" href="os__interface_8hpp.html#a1acf1ce04ab7fe3a5972c0618adcbbac">rt_printf</a>(<span class="stringliteral">&quot;\tMotor 2 enabled: %d\n&quot;</span>, motor2_enabled);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <a class="code" href="os__interface_8hpp.html#a1acf1ce04ab7fe3a5972c0618adcbbac">rt_printf</a>(<span class="stringliteral">&quot;\tMotor 2 ready: %d\n&quot;</span>, motor2_ready);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <a class="code" href="os__interface_8hpp.html#a1acf1ce04ab7fe3a5972c0618adcbbac">rt_printf</a>(<span class="stringliteral">&quot;\tError Code: %d\n&quot;</span>, error_code);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    }</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    <span class="keywordtype">bool</span> is_ready()</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;    {</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;        <span class="keywordflow">if</span>(system_enabled &amp;&amp;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;           motor1_enabled &amp;&amp;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;           motor1_ready &amp;&amp;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;           motor2_enabled &amp;&amp;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;           motor2_ready &amp;&amp;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;           !error_code)</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        {</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        }</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;        <span class="keywordflow">else</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;        {</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        }</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;    }</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;};</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="comment">//==============================================================================</span></div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html">  204</a></span>&#160;<span class="comment"></span><span class="keyword">class </span><a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html">MotorBoardInterface</a>: <span class="keyword">public</span> <a class="code" href="classblmc__drivers_1_1DeviceInterface.html">DeviceInterface</a></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;{</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#aecd23682c4a8c0df8e57b4c752e1d9ee">  210</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#aecd23682c4a8c0df8e57b4c752e1d9ee">~MotorBoardInterface</a>() {}</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;    </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#a14e237254ba495a66091ea3a3a33fa75">  215</a></span>&#160;    <span class="keyword">typedef</span> real_time_tools::ThreadsafeTimeseries&lt;double&gt; <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a14e237254ba495a66091ea3a3a33fa75">ScalarTimeseries</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#ab0e201396fe808cbc480b69768c81fa2">  219</a></span>&#160;    <span class="keyword">typedef</span> ScalarTimeseries::Index <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#ab0e201396fe808cbc480b69768c81fa2">Index</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#aef0ca990410b130b67abce74d20d58a5">  223</a></span>&#160;    <span class="keyword">typedef</span> real_time_tools::ThreadsafeTimeseries&lt;Index&gt; <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#aef0ca990410b130b67abce74d20d58a5">IndexTimeseries</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#ae3777e484dda60c4abe87f2b542ddfb8">  227</a></span>&#160;    <span class="keyword">typedef</span> real_time_tools::ThreadsafeTimeseries&lt;MotorBoardStatus&gt; <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#ae3777e484dda60c4abe87f2b542ddfb8">StatusTimeseries</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#ae2afe94a023d9f08a4c689e9b7660f15">  231</a></span>&#160;    <span class="keyword">typedef</span> real_time_tools::ThreadsafeTimeseries&lt;MotorBoardCommand&gt; <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#ae2afe94a023d9f08a4c689e9b7660f15">CommandTimeseries</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">  235</a></span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Type&gt; <span class="keyword">using</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr</a> = std::shared_ptr&lt;Type&gt;;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#abeb474bef6d85dffcd5227e5ea965cc5">  239</a></span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Type&gt; <span class="keyword">using</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#abeb474bef6d85dffcd5227e5ea965cc5">Vector</a> = std::vector&lt;Type&gt;;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#a8e869cbdb9fcc872ba5a33813e0dfafb">  244</a></span>&#160;    <span class="keyword">enum</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a8e869cbdb9fcc872ba5a33813e0dfafb">MeasurementIndex</a> {current_0, current_1,</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                           position_0, position_1,</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;                           velocity_0, velocity_1,</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                           analog_0, analog_1,</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                           encoder_index_0, encoder_index_1,</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;                           measurement_count};</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1MotorBoardInterface.html#a82ed4d0fa527521707281396095a88ca">  254</a></span>&#160;    <span class="keyword">enum</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a82ed4d0fa527521707281396095a88ca">ControlIndex</a> {current_target_0, current_target_1, control_count};</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const ScalarTimeseries&gt;</a> get_measurement(</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">int</span>&amp; index) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const StatusTimeseries&gt;</a> get_status() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const ScalarTimeseries&gt;</a> get_control(<span class="keyword">const</span> <span class="keywordtype">int</span>&amp; index) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const CommandTimeseries&gt;</a> get_command() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const ScalarTimeseries&gt;</a> get_sent_control(</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">int</span>&amp; index) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const CommandTimeseries&gt;</a> get_sent_command() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_control(<span class="keyword">const</span> <span class="keywordtype">double</span>&amp; control, <span class="keyword">const</span> <span class="keywordtype">int</span>&amp; index) = 0;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;    </div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_command(<span class="keyword">const</span> <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html">MotorBoardCommand</a>&amp; command) = 0;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> send_if_input_changed() = 0;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;};</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;<span class="comment">//==============================================================================</span></div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html">  351</a></span>&#160;<span class="comment"></span><span class="keyword">class </span><a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html">CanBusMotorBoard</a>: <span class="keyword">public</span>  <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html">MotorBoardInterface</a></div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;{</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;    <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html">CanBusMotorBoard</a>(std::shared_ptr&lt;CanBusInterface&gt; can_bus,</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;                     <span class="keyword">const</span> <span class="keywordtype">size_t</span>&amp; history_length = 1000,</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;                     <span class="keyword">const</span> <span class="keywordtype">int</span> &amp;control_timeout_ms = 100);</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    ~<a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html">CanBusMotorBoard</a>();</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html#a38094207eed00f6b1d75cfe9b5b87046">  383</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const ScalarTimeseries&gt;</a> <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html#a38094207eed00f6b1d75cfe9b5b87046">get_measurement</a>(<span class="keyword">const</span> <span class="keywordtype">int</span>&amp; index)<span class="keyword"> const</span></div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        <span class="keywordflow">return</span> measurement_[index];</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;    }</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html#a04aef38d8490ed8ac0e12cb09ef313e4">  393</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const StatusTimeseries&gt;</a> <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html#a04aef38d8490ed8ac0e12cb09ef313e4">get_status</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        <span class="keywordflow">return</span> status_;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    }</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html#a298403ab64585ed459eda57165057fef">  405</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const ScalarTimeseries&gt;</a> <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html#a298403ab64585ed459eda57165057fef">get_control</a>(<span class="keyword">const</span> <span class="keywordtype">int</span>&amp; index)<span class="keyword"> const</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;        <span class="keywordflow">return</span> control_[index];</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    }</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html#abc8f5d6a631dc01a236d623754362e7d">  416</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const CommandTimeseries&gt;</a> <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html#abc8f5d6a631dc01a236d623754362e7d">get_command</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        <span class="keywordflow">return</span> command_;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    }</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html#a907629485fcf006e1e61b9739d3c94ec">  427</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const ScalarTimeseries&gt;</a> <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html#a907629485fcf006e1e61b9739d3c94ec">get_sent_control</a>(</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">int</span>&amp; index)<span class="keyword"> const</span></div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        <span class="keywordflow">return</span> control_[index];</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    }</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html#a4e2920571e42aafa8045d1148f078a3a">  438</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;const CommandTimeseries&gt;</a> <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html#a4e2920571e42aafa8045d1148f078a3a">get_sent_command</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;        <span class="keywordflow">return</span> sent_command_;</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    }</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html#a8dbd787fcfc25d68d5443e2f0bf21f64">  453</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html#a8dbd787fcfc25d68d5443e2f0bf21f64">set_control</a>(<span class="keyword">const</span> <span class="keywordtype">double</span>&amp; control, <span class="keyword">const</span> <span class="keywordtype">int</span>&amp; index)</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    {</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        control_[index]-&gt;append(control);</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    }</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classblmc__drivers_1_1CanBusMotorBoard.html#a4bb9c1f7f59507feed145111ccffc625">  463</a></span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html#a4bb9c1f7f59507feed145111ccffc625">set_command</a>(<span class="keyword">const</span> <a class="code" href="classblmc__drivers_1_1MotorBoardCommand.html">MotorBoardCommand</a>&amp; command)</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;    {</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        command_-&gt;append(command);</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;    }</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;    <span class="keyword">virtual</span> <span class="keywordtype">void</span> send_if_input_changed();</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;    <span class="keywordtype">void</span> wait_until_ready();</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;    <span class="keywordtype">bool</span> is_ready();</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;    <span class="keywordtype">void</span> pause_motors();</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;    <span class="keywordtype">void</span> disable_can_recv_timeout();</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> Type&gt; Vector&lt;Ptr&lt;Type&gt;&gt;</div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;    create_vector_of_pointers(<span class="keyword">const</span> <span class="keywordtype">size_t</span>&amp; size, <span class="keyword">const</span> <span class="keywordtype">size_t</span>&amp; length)</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;    {</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;        Vector&lt;Ptr&lt;Type&gt;&gt; vector(size);</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;        <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i &lt; size; i++)</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;        {</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;            vector[i] = std::make_shared&lt;Type&gt;(length);</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        }</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;        <span class="keywordflow">return</span> vector;</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;    }</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; int32_t bytes_to_int32(T bytes)</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;    {</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        <span class="keywordflow">return</span> (int32_t) bytes[3] + ((int32_t)bytes[2] &lt;&lt; 8) +</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;                ((int32_t)bytes[1] &lt;&lt; 16) + ((int32_t)bytes[0] &lt;&lt; 24);</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;    }</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;    <span class="keywordtype">float</span> q24_to_float(int32_t qval)</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;    {</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;        <span class="keywordflow">return</span> ((<span class="keywordtype">float</span>)qval / (1 &lt;&lt; 24));</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;    }</div><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;    int32_t float_to_q24(<span class="keywordtype">float</span> fval)</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;    {</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;        <span class="keywordflow">return</span> ((<span class="keywordtype">int</span>)(fval * (1 &lt;&lt; 24)));</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;    }</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;    <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt; <span class="keywordtype">float</span> qbytes_to_float(T qbytes)</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;    {</div><div class="line"><a name="l00561"></a><span class="lineno">  561</span>&#160;        <span class="keywordflow">return</span> q24_to_float(bytes_to_int32(qbytes));</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;    }</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;    <span class="keywordtype">void</span> send_newest_controls();</div><div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;    <span class="keywordtype">void</span> send_newest_command();</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;    <span class="keyword">static</span> THREAD_FUNCTION_RETURN_TYPE loop(<span class="keywordtype">void</span>* instance_pointer)</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;    {</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        ((<a class="code" href="classblmc__drivers_1_1CanBusMotorBoard.html">CanBusMotorBoard</a>*)(instance_pointer))-&gt;loop();</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        <span class="keywordflow">return</span> THREAD_FUNCTION_RETURN_VALUE;</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    }</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;    <span class="keywordtype">void</span> loop();</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    <span class="keywordtype">void</span> print_status();</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;<span class="keyword">private</span>:  </div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    std::shared_ptr&lt;CanBusInterface&gt; can_bus_;</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;    <span class="keyword">enum</span> CanframeIDs</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;    {</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;        COMMAND_ID= 0x00,</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;        IqRef     = 0x05,</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;        STATUSMSG = 0x10,</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;        Iq        = 0x20,</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;        POS       = 0x30,</div><div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160;        SPEED     = 0x40,</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;        ADC6      = 0x50,</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        ENC_INDEX = 0x60</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;    };</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;    Vector&lt;Ptr&lt;ScalarTimeseries&gt;&gt; measurement_;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;    <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;StatusTimeseries&gt;</a> status_;</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    Vector&lt;Ptr&lt;ScalarTimeseries&gt;&gt; control_;</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;    <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;CommandTimeseries&gt;</a> command_;</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;    Vector&lt;Ptr&lt;ScalarTimeseries&gt;&gt; sent_control_;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;    <a class="code" href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">Ptr&lt;CommandTimeseries&gt;</a> sent_command_;</div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;    <span class="keywordtype">bool</span> is_loop_active_;</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;    <span class="keywordtype">bool</span> motors_are_paused_;</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;    <span class="keywordtype">int</span> control_timeout_ms_;</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;    real_time_tools::RealTimeThread rt_thread_;</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;};</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;} <span class="comment">// namespace blmc_drivers</span></div><div class="ttc" id="classblmc__drivers_1_1MotorBoardCommand_html_ad5ac32071cbf2854135fee7bb89acf4e"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardCommand.html#ad5ac32071cbf2854135fee7bb89acf4e">blmc_drivers::MotorBoardCommand::MotorBoardCommand</a></div><div class="ttdeci">MotorBoardCommand()</div><div class="ttdoc">Construct a new MotorBoardCommand object. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:38</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_aecd23682c4a8c0df8e57b4c752e1d9ee"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#aecd23682c4a8c0df8e57b4c752e1d9ee">blmc_drivers::MotorBoardInterface::~MotorBoardInterface</a></div><div class="ttdeci">virtual ~MotorBoardInterface()</div><div class="ttdoc">Destroy the MotorBoardInterface object. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:210</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardCommand_html_ae7cf695d2600d84929729befc3cb29f9"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardCommand.html#ae7cf695d2600d84929729befc3cb29f9">blmc_drivers::MotorBoardCommand::MotorBoardCommand</a></div><div class="ttdeci">MotorBoardCommand(uint32_t id, int32_t content)</div><div class="ttdoc">Construct a new MotorBoardCommand object. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:46</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardStatus_html_ac050ae0cdf1c6e56ebd241c41330a42d"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardStatus.html#ac050ae0cdf1c6e56ebd241c41330a42d">blmc_drivers::MotorBoardStatus::print</a></div><div class="ttdeci">void print() const </div><div class="ttdoc">Simply print the status of the motor board. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:170</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html_a907629485fcf006e1e61b9739d3c94ec"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html#a907629485fcf006e1e61b9739d3c94ec">blmc_drivers::CanBusMotorBoard::get_sent_control</a></div><div class="ttdeci">virtual Ptr&lt; const ScalarTimeseries &gt; get_sent_control(const int &amp;index) const </div><div class="ttdoc">Get the already sent controls. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:427</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_aef0ca990410b130b67abce74d20d58a5"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#aef0ca990410b130b67abce74d20d58a5">blmc_drivers::MotorBoardInterface::IndexTimeseries</a></div><div class="ttdeci">real_time_tools::ThreadsafeTimeseries&lt; Index &gt; IndexTimeseries</div><div class="ttdoc">A useful shortcut. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:223</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html">blmc_drivers::MotorBoardInterface</a></div><div class="ttdoc">MotorBoardInterface declares an API to inacte with a MotorBoard. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:204</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardCommand_html_ac417b63a8cc8801a6757f4dce3b0810c"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardCommand.html#ac417b63a8cc8801a6757f4dce3b0810c">blmc_drivers::MotorBoardCommand::content_</a></div><div class="ttdeci">int32_t content_</div><div class="ttdoc">content_ is the value of teh command to be sent to the cards. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:98</div></div>
<div class="ttc" id="can__bus_8hpp_html"><div class="ttname"><a href="can__bus_8hpp.html">can_bus.hpp</a></div><div class="ttdoc">License BSD-3-Clause </div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_abeb474bef6d85dffcd5227e5ea965cc5"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#abeb474bef6d85dffcd5227e5ea965cc5">blmc_drivers::MotorBoardInterface::Vector</a></div><div class="ttdeci">std::vector&lt; Type &gt; Vector</div><div class="ttdoc">A useful shortcut. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:239</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html_a04aef38d8490ed8ac0e12cb09ef313e4"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html#a04aef38d8490ed8ac0e12cb09ef313e4">blmc_drivers::CanBusMotorBoard::get_status</a></div><div class="ttdeci">virtual Ptr&lt; const StatusTimeseries &gt; get_status() const </div><div class="ttdoc">Get the status of the CAN card. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:393</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html_a4bb9c1f7f59507feed145111ccffc625"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html#a4bb9c1f7f59507feed145111ccffc625">blmc_drivers::CanBusMotorBoard::set_command</a></div><div class="ttdeci">virtual void set_command(const MotorBoardCommand &amp;command)</div><div class="ttdoc">Set the commands, see MotorBoardInterface::set_command. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:463</div></div>
<div class="ttc" id="namespaceblmc__drivers_html"><div class="ttname"><a href="namespaceblmc__drivers.html">blmc_drivers</a></div><div class="ttdoc">This namespace is the standard namespace of the package. </div><div class="ttdef"><b>Definition:</b> analog_sensors.cpp:15</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html_a8dbd787fcfc25d68d5443e2f0bf21f64"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html#a8dbd787fcfc25d68d5443e2f0bf21f64">blmc_drivers::CanBusMotorBoard::set_control</a></div><div class="ttdeci">virtual void set_control(const double &amp;control, const int &amp;index)</div><div class="ttdoc">Setters. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:453</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardCommand_html_aa8a54ff3faa6c2b4ce50c13a0d83bcb3"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardCommand.html#aa8a54ff3faa6c2b4ce50c13a0d83bcb3">blmc_drivers::MotorBoardCommand::print</a></div><div class="ttdeci">void print() const </div><div class="ttdoc">Display on a terminal the status of the message. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:55</div></div>
<div class="ttc" id="os__interface_8hpp_html_a1acf1ce04ab7fe3a5972c0618adcbbac"><div class="ttname"><a href="os__interface_8hpp.html#a1acf1ce04ab7fe3a5972c0618adcbbac">rt_printf</a></div><div class="ttdeci">#define rt_printf</div><div class="ttdoc">Create a common type_def to wrap xenomai and posix. </div><div class="ttdef"><b>Definition:</b> os_interface.hpp:76</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html_a4e2920571e42aafa8045d1148f078a3a"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html#a4e2920571e42aafa8045d1148f078a3a">blmc_drivers::CanBusMotorBoard::get_sent_command</a></div><div class="ttdeci">virtual Ptr&lt; const CommandTimeseries &gt; get_sent_command() const </div><div class="ttdoc">Get the already sent commands. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:438</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardCommand_html"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardCommand.html">blmc_drivers::MotorBoardCommand</a></div><div class="ttdoc">This MotorBoardCommand class is a data structurs that defines a command. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:31</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_ae2afe94a023d9f08a4c689e9b7660f15"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#ae2afe94a023d9f08a4c689e9b7660f15">blmc_drivers::MotorBoardInterface::CommandTimeseries</a></div><div class="ttdeci">real_time_tools::ThreadsafeTimeseries&lt; MotorBoardCommand &gt; CommandTimeseries</div><div class="ttdoc">A useful shortcut. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:231</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardStatus_html_a9fd931e24550f5e5877d7a6cf499f6cf"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardStatus.html#a9fd931e24550f5e5877d7a6cf499f6cf">blmc_drivers::MotorBoardStatus::ErrorCodes</a></div><div class="ttdeci">ErrorCodes</div><div class="ttdoc">This is the list of the error codes. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:148</div></div>
<div class="ttc" id="os__interface_8hpp_html"><div class="ttname"><a href="os__interface_8hpp.html">os_interface.hpp</a></div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_a14e237254ba495a66091ea3a3a33fa75"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#a14e237254ba495a66091ea3a3a33fa75">blmc_drivers::MotorBoardInterface::ScalarTimeseries</a></div><div class="ttdeci">real_time_tools::ThreadsafeTimeseries&lt; double &gt; ScalarTimeseries</div><div class="ttdoc">A useful shortcut. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:215</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardCommand_html_ad61acf8dcb8f6fcb382fc5cbc1e44615"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardCommand.html#ad61acf8dcb8f6fcb382fc5cbc1e44615">blmc_drivers::MotorBoardCommand::Contents</a></div><div class="ttdeci">Contents</div><div class="ttdoc">Is the different command status. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:84</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_ab0e201396fe808cbc480b69768c81fa2"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#ab0e201396fe808cbc480b69768c81fa2">blmc_drivers::MotorBoardInterface::Index</a></div><div class="ttdeci">ScalarTimeseries::Index Index</div><div class="ttdoc">A useful shortcut. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:219</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html_a38094207eed00f6b1d75cfe9b5b87046"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html#a38094207eed00f6b1d75cfe9b5b87046">blmc_drivers::CanBusMotorBoard::get_measurement</a></div><div class="ttdeci">virtual Ptr&lt; const ScalarTimeseries &gt; get_measurement(const int &amp;index) const </div><div class="ttdoc">Getters. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:383</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardCommand_html_a31bfcc3cb1b2c35cbd5349123d884af4"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardCommand.html#a31bfcc3cb1b2c35cbd5349123d884af4">blmc_drivers::MotorBoardCommand::id_</a></div><div class="ttdeci">uint32_t id_</div><div class="ttdoc">id_ is the command to be modifies on the card. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:93</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_a8e869cbdb9fcc872ba5a33813e0dfafb"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#a8e869cbdb9fcc872ba5a33813e0dfafb">blmc_drivers::MotorBoardInterface::MeasurementIndex</a></div><div class="ttdeci">MeasurementIndex</div><div class="ttdoc">This is the list of the measurement we can access. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:244</div></div>
<div class="ttc" id="classblmc__drivers_1_1DeviceInterface_html"><div class="ttname"><a href="classblmc__drivers_1_1DeviceInterface.html">blmc_drivers::DeviceInterface</a></div><div class="ttdoc">this class exists purely for logical reasons, it does not in itself implement anything. </div><div class="ttdef"><b>Definition:</b> device_interface.hpp:36</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_a6a733b7ed7a3a96f6b0712b6bb5307f8"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#a6a733b7ed7a3a96f6b0712b6bb5307f8">blmc_drivers::MotorBoardInterface::Ptr</a></div><div class="ttdeci">std::shared_ptr&lt; Type &gt; Ptr</div><div class="ttdoc">A useful shortcut. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:235</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_ae3777e484dda60c4abe87f2b542ddfb8"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#ae3777e484dda60c4abe87f2b542ddfb8">blmc_drivers::MotorBoardInterface::StatusTimeseries</a></div><div class="ttdeci">real_time_tools::ThreadsafeTimeseries&lt; MotorBoardStatus &gt; StatusTimeseries</div><div class="ttdoc">A useful shortcut. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:227</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html_abc8f5d6a631dc01a236d623754362e7d"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html#abc8f5d6a631dc01a236d623754362e7d">blmc_drivers::CanBusMotorBoard::get_command</a></div><div class="ttdeci">virtual Ptr&lt; const CommandTimeseries &gt; get_command() const </div><div class="ttdoc">Get the commands to be sent. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:416</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardStatus_html"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardStatus.html">blmc_drivers::MotorBoardStatus</a></div><div class="ttdoc">This class represent a 8 bits message that describe the state (enable/disabled) of the card and the t...</div><div class="ttdef"><b>Definition:</b> motor_board.hpp:108</div></div>
<div class="ttc" id="device__interface_8hpp_html"><div class="ttname"><a href="device__interface_8hpp.html">device_interface.hpp</a></div><div class="ttdoc">License BSD-3-Clause </div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardCommand_html_abdbd6eb70164938ea91ae02000ccf7b2"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardCommand.html#abdbd6eb70164938ea91ae02000ccf7b2">blmc_drivers::MotorBoardCommand::IDs</a></div><div class="ttdeci">IDs</div><div class="ttdoc">IDs are the different implemented commands that one can send to the MotorBoard. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:64</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html">blmc_drivers::CanBusMotorBoard</a></div><div class="ttdoc">This class CanBusMotorBoard implements a MotorBoardInterface specific to CAN networks. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:351</div></div>
<div class="ttc" id="classblmc__drivers_1_1MotorBoardInterface_html_a82ed4d0fa527521707281396095a88ca"><div class="ttname"><a href="classblmc__drivers_1_1MotorBoardInterface.html#a82ed4d0fa527521707281396095a88ca">blmc_drivers::MotorBoardInterface::ControlIndex</a></div><div class="ttdeci">ControlIndex</div><div class="ttdoc">This is the list of the controls we can send. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:254</div></div>
<div class="ttc" id="classblmc__drivers_1_1CanBusMotorBoard_html_a298403ab64585ed459eda57165057fef"><div class="ttname"><a href="classblmc__drivers_1_1CanBusMotorBoard.html#a298403ab64585ed459eda57165057fef">blmc_drivers::CanBusMotorBoard::get_control</a></div><div class="ttdeci">virtual Ptr&lt; const ScalarTimeseries &gt; get_control(const int &amp;index) const </div><div class="ttdoc">Get the controls to be sent. </div><div class="ttdef"><b>Definition:</b> motor_board.hpp:405</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_80e6cdd9bbc895bd262b4f65e652822c.html">catkin</a></li><li class="navelem"><a class="el" href="dir_dace45749abc688185d44e8b166728a5.html">hardware</a></li><li class="navelem"><a class="el" href="dir_87d2711f33d814f4f77c208b3c1f3ba9.html">blmc_drivers</a></li><li class="navelem"><a class="el" href="dir_816dc94020a36d1af25b1f5614889f22.html">include</a></li><li class="navelem"><a class="el" href="dir_a56b819f7914f14382554b99ca83f1d8.html">blmc_drivers</a></li><li class="navelem"><a class="el" href="dir_b47d905e4c85065ffdd69d9f780e266d.html">devices</a></li><li class="navelem"><a class="el" href="motor__board_8hpp.html">motor_board.hpp</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
